
//
//  Extension+NSDate.swift
//  XMWeimo
//
//  Created by ios001 on 16/7/26.
//  Copyright © 2016年 itcast. All rights reserved.
//

import UIKit

// 缓存数据删除时间
private let deleteTime:Double = -60*6

private let df = NSDateFormatter()
// 日历类
private let calendar = NSCalendar.currentCalendar()
// 在iOS开发中,对于 NSDateFormatter 和 NSCalendar.currentCalender() 当创建或者销毁的时候,特别消耗性能
// 解决方案,在swift中创建一个常量,如果是在OC中可以定义一个单例

extension NSDate {
    // 清理微博缓存时间字符串
    class func sinaDeleteTimeStr() -> String {
        // 日期
        let date = NSDate().dateByAddingTimeInterval(deleteTime)
        df.dateFormat = "yyyy-MM-dd HH:mm:ss"
        return df.stringFromDate(date)
    }
    // class 定义类方法
    class func sinaDate(createAt: String) -> NSDate? {
//        print(df)
        // 设置locate 指定时区 如果不指定 在真机中时间有问题
        df.locale = NSLocale(localeIdentifier: "en_US")
        // 指定格式
        df.dateFormat = "EEE MMM dd HH:mm:ss z yyyy"
        // 获取微博日期
        return df.dateFromString(createAt)
    }
        // 测试数据
        //        let sinaDate2 = sinaDate.dateByAddingTimeInterval(-3600*24*365)
    
    // 获取微博事件字符串
        var sinaDescripitionStr: String {
        // 定义一个属性,来判断是否是今年
        let isThisYear = sinaIsThisYear(self)
        // 是今年
        if isThisYear {
            // 日历类
            let calendar = NSCalendar.currentCalendar()
            // 是今天
            if calendar.isDateInToday(self) {
                // 获取当前时间和传入的微博时间差值
                let s = Int(NSDate().timeIntervalSinceDate(self))
//                print(s)
                
                if s < 60 {
//                    print("刚刚")
                    return "刚刚"
                }else if s >= 60 && s < 3600 {
//                    print("\(s/60)分钟前")
                    return ("\(s/60)分钟前")
                }else {
//                    print("\(s/3600)小时前")
                    return ("\(s/3600)小时前")
                }
            }else if calendar.isDateInYesterday(self) {
                // 是昨天
                df.dateFormat = "昨天 HH:mm"
            }else {
                // 其他
                df.dateFormat = "MM月dd日 HH:mm"
                return df.stringFromDate(self)
            }
            
        }else {
            // 不是今年 显示格式: 2015年7月6号 10:10
            // 指定时间格式
            df.dateFormat = "yyyy年MM月dd日 HH:mm"
//            let result = df.stringFromDate(self)
//            print(result)
            sinaIsThisYear(self)
            return df.stringFromDate(self)
        }
        return df.stringFromDate(self)
    }
    
    func sinaIsThisYear(sinaDate: NSDate) -> Bool {
        let df = NSDateFormatter()
        // 设置locate 指定时区 如果不指定 在真机中时间有问题
        df.locale = NSLocale(localeIdentifier: "en_US")
        // 指定时间格式
        df.dateFormat = "yyyy"
        // 获取当前日期
        let currentDate = NSDate()
        // 微博日期字符串
        let sinaStr = df.stringFromDate(sinaDate)
        // 当前日期字符串
        let currentStr = df.stringFromDate(currentDate)
        return sinaStr == currentStr
    }
}

